import axios from 'axios'

// 前台商城API（商品、搜索等）- 使用3000端口
const api = axios.create({
  baseURL: 'http://localhost:3000/api',
  timeout: 10000
})

// 后台管理API（订单、用户管理等）- 使用3002端口，与后台管理项目共享数据
const adminApi = axios.create({
  baseURL: 'http://localhost:3002/api',
  timeout: 10000
})

// 请求拦截器 - 前台API
api.interceptors.request.use(config => {
  const token = localStorage.getItem('token')
  if (token) {
    config.headers.Authorization = `Bearer ${token}`
  }
  return config
})

// 请求拦截器 - 后台API
adminApi.interceptors.request.use(config => {
  const token = localStorage.getItem('token')
  if (token) {
    config.headers.Authorization = `Bearer ${token}`
  }
  return config
})

// 响应拦截器 - 前台API
api.interceptors.response.use(
  response => response.data,
  error => {
    console.error('API Error:', error)
    return Promise.reject(error)
  }
)

// 响应拦截器 - 后台API
adminApi.interceptors.response.use(
  response => response.data,
  error => {
    console.error('Admin API Error:', error)
    // 保留完整的错误信息，包括response.data
    if (error.response) {
      // 如果后台返回了错误信息，保留它
      return Promise.reject({
        ...error,
        response: {
          ...error.response,
          data: error.response.data || { message: error.message }
        }
      })
    }
    return Promise.reject(error)
  }
)

// 用户认证API（使用后台API，统一用户数据）
export const authAPI = {
  login: (credentials) => adminApi.post('/login', credentials),
  register: (data) => adminApi.post('/register', data)
}

// 商品API（可以使用前台或后台，这里用后台的统一数据源）
export const productAPI = {
  // 获取所有商品（可传分类参数）
  getProducts: (category) => {
    const params = category && category !== 'all' ? { category } : {}
    return adminApi.get('/products', { params })
  },
  // 获取热门商品
  getHotProducts: () => adminApi.get('/products/hot'),
  // 获取单个商品详情
  getProductById: (id) => adminApi.get(`/products/${id}`),
  // 搜索商品
  searchProducts: (keyword) => adminApi.get('/search', { params: { keyword } }),
  // 添加商品（管理功能）
  addProduct: (product) => adminApi.post('/admin/products', product)
}

export const statsAPI = {
  getStats: () => adminApi.get('/stats')
}

// 订单API（使用后台API，与后台管理项目共享订单数据）
export const orderAPI = {
  // 创建订单 - 需要登录认证
  createOrder: (orderData) => adminApi.post('/orders', orderData),
  // 获取订单列表（用户自己的订单）
  getOrders: () => adminApi.get('/orders'),
  // 获取订单详情
  getOrderById: (id) => adminApi.get(`/orders/${id}`)
}

export default api